# 导入自动化模块
from DrissionPage import ChromiumPage
# 导入 csv模块
import csv

# 创建文件对象
f = open('深圳数据分析data.csv', mode='w', encoding='utf-8')
# 字典写入的方法
csv_writer = csv.DictWriter(f, fieldnames=[
    '公司',
    '职位',
    '薪资',
    '经验',
    '学历',
    '领域',
    '融资',
    '规模',
    '技能',
    '福利'
])
# 写入表头
csv_writer.writeheader()

# 打开浏览器(实例化一个浏览器对象) dp 浏览器
dp = ChromiumPage()

# 监听数据包
dp.listen.start('search/joblist.json')

# 访问网站
dp.get('https://www.zhipin.com/web/geek/job?query=%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90&city=101280600') # 深圳

# 循环
for page in range(1, 11):
    # 下滑页面 -> 页面下滑到底部
    dp.scroll.to_bottom()

    # 等待数据加载
    resp = dp.listen.wait()

    # 获取数据包响应数据
    json_data = resp.response.body
    # print(json_data)

    # 解析数据，提取相关职位信息内容
    # 字典 键值对取值，提取职位信息所在列表
    jobList = json_data['zpData']['jobList']
    # for 循环遍历，提取列表里面的元素内容
    for job in jobList:
        # 提取具体数据，保存在字典里面
        dit = {
            '公司': job['brandName'],
            '职位': job['jobName'],
            '薪资': job['salaryDesc'],
            '经验': job['jobExperience'],
            '学历': job['jobDegree'],
            '领域': job['brandIndustry'],
            '融资': job['brandStageName'],
            '规模': job['brandScaleName'],
            '技能': ' '.join(job['skills']),  # 把列表合并成字符串
            '福利': ' '.join(job['welfareList'])
        }
        # 写入数据
        csv_writer.writerow(dit)
        # pprint(dit)
        # pprint(job)
    # 点击下一页
    dp.ele('css:.ui-icon-arrow-right').click()
